package Graficas;

import java.awt.Graphics;
import java.util.LinkedList;

import Logica.Celdas.Celda;

public class AnimacionMoneda extends Thread implements Pintable_Animable {
	/* ################## ATRIBUTOS DE INSTANCIA ######################## */
	protected int maxY, yActual, xInicial, yInicial, t;
	protected SpriteMovementsPrioridad aniMonedas;
	protected Celda c;
	protected Sprite spriteAPintar;

	/* ################## CONSTRUCTORES ######################## */

	public AnimacionMoneda(Celda c, SpriteMovementsPrioridad aniMonedas, int x, int y) {
		super("AnimacionMonedas");
		this.aniMonedas = aniMonedas;
		this.xInicial = x;
		this.yInicial = y - c.getSizeY()/2;
		this.yActual=yInicial;
		this.maxY =yInicial- 56;
		this.t = (yInicial - maxY) / aniMonedas.cantSpritesDir;
		this.c = c;
		aniMonedas.setPrioridad(0, true);
	}

	/* ################## COMANDOS ######################## */
	/**
	 * Inicio la ejecucion de la animacion.
	 */
	public void run() {
		c.setInAnimation(true);
		while (yActual > maxY) {
			yActual--;
			if (t > 0) {
				t--;
			} else {
				spriteAPintar = aniMonedas.getSprite(1);
				this.t = (yInicial - maxY) / aniMonedas.cantSpritesDir;
			}
			try {
				sleep(5);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		c.setInAnimation(false);
	}

	@Override
	public void pintar(Graphics g, Sprite sprite, int x, int y) {
		if (spriteAPintar != null)
			spriteAPintar.Draw(g, x+4, yActual);
		g.drawImage(c.getSprite().getImage(), x , y, null);
	}

	@Override
	public boolean isAliveAnimation() {
		return this.isAlive();
	}

	@Override
	public Celda getCelda() {
		return c;
	}
}